ПС. Давать спеллбук после найма (чтобы он сам пропадал после морфа) героя нельзя, ибо в этом случае, если герой не успел или не захотел выбрать талант, то у него пропадает такая возможность после морфа.
Делать нужно именно так. И что бы у тебя не было здесь ошибки, тебе нужно каким-либо образом обозначить то, что у героя есть непотраченный талант. Т.е. ты будешь давать герою спеллбук после морфа, если у него есть доступные очки талантов.
И ещё кое-что: если ты триггерно даёшь спеллбук и пермоментишь его (тоже триггерно), то после морфа он не пропадаёт, а если ты его отнимаешь - он не возвращается (т.е. нету лишних ненужных появлений/исчезновений абилки).
А так же смотри что бы спеллбук не остался пустым, решается это пермоментом абилок внутри спеллбука.
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
Делаешь предметную абилку с уровнями, создаешь абилку-пустышку. В скиллы герою даешь пустышку. Отслеживаешь изучение пустышки и в соответствии с ее уровнем апаешь "скрытый" предметный скилл.
not_name:
я карту посмотрел, да, пытался сделать похожее
только там с очередью приказов шляпа выходит, поэтому я лучше сделаю все визуально
в общем, реализовал, как и говорил выше - при смерти сразу воскрешаю героя на месте гибели, пауза, анимация, таймер, по прошествии таймера - выдаю все нужное, при повторной смерти - забираю
адекватно работает с крестами
Неуязвимость проверяют через даммика с атакой, через приказ, сможет ли атаковать или нет, просто проверка выполнения приказа. Так же пытаются нанести урон и смотрят сколько он отнял здоровья, так можно и определить неуязвимость и вычислить резист юнита к конкретному типу урона.
Кароче берёшь крит и лайфстил.
Если правильно всё выдавать - будет работать, так что эксперементируй.
Подсказка: в момент замаха крит уже должен быть у юнита.
Более подробно или с примером - мб попозже... Но не ответить хоть что-то - не смог.
Да сделай проще. Создай многоуровневую способность-пустышку. и когда отдаешь приказ атаковать в область, давай ему эту способность и с помощью неё отслеживай, какую область атаковать.
Например,
способность уровень 1, значит атаковать должен 1 область.
Уровень 2 - 2 область и т. д.
Не вижу смысла усложнять жизнь с хеш-таблицей.
Надеюсь понятно?) Отдал приказ, присвоил способность, после каста жди пару сек и в зависимости от уровня способности-пустышки отправляй в ту или иную область.
Попробуй событие - входит в регион, ну и проверь что юн ит мертв.
Дефолтные способности сложно отслеживать, многие используют для работы свои методы, как к примеру руны или орбы - они хоть и кастуют спелл нл события каста нету, как и проверки приказа, кулдауна и прочего.
наверн не правильные параметры абилки, если не ошибаюсь. у меня тоже вылетала игра, когда не указывал. надо смотреть и сравнивать со станд абилами
раскрыть
Характеристики: Нормальная форма боевой единицы - эта форма, в которой находится кастер (ее не обязательно указывать, в большинстве случаев кастер вернется сам к своей форме. А то, что указано в этой графе - пустышка.) Альтернативная форма боевой единицы - форма, в которую хотят превратиться
Между формами должны быть зависимости, то есть у этих двух форм должна быть эта способность (у двух типов юнитов должна быть указана эта способность). иначе варкрафт вылетает с критической ошибкой, если у одной из них не указана эта способность. Исключение - если в способности в графе "Постоянные" установлена галочка. Это означает, что превращает в эту форму навсегда, и обратно в нормальную форму нельзя будет вернуться, так как кнопка способности пропадает.
Замечено, что, если юнит находится в альтернативной форме, и он умирает, а потом воскрешает (например, перерождением), то воскрешает в нормальной форме. Даже, если не был превращен в альтернативную форму через морф, а создан через триггер. Все что нужно это абилка с нормальной формой, чтобы превратиться в нее после смерти
Морфы по своей сути способности выключатели, они как и "Жар преисподней" или "щит пехотинца" могут быть включены и выключены, но только вот что если юнит будет оглушён или вовсе мертв? А для того и существует флаг Непрерываемый, он гарантирует что юнит выполнит приказ "во что-бы то не стало", даже если он умрет. Морфы славились этими багами еще во времена царя гороха, и близзарды их переделывали, но не все поправили и теперь метаморфоза + руна = Непрерываемый навсегда! Руна удаляет способность сразу после выполнения, не давая метаморфозе выполнится еще раз чтобы завершить перевоплощение и снять флаг Неприрываемый Так как сам морф то не произошел, юнит не изменяется а остается каким был, но уже с бонусом в виде неспособности изменить первый отданный приказ.
но вот то что у вас юнит умирает, это очень странно.
без карты нельзя ничего сказать
еще примеры см тут
Стандартный ИИ не будет юзать канал, как и не будет применять стандартные заклинания так как вы хотите. Вовсе весь микроконтроль и правила использования способностей не доступны для изменения.
Либо брать дефолт с нужными правилами применения, либо писать самому правила применения скиллов, а редакторе триггеров.
Потом над блоками надо поставить невидимые платформы и поднимать/опускать кнопками Ctrl+Shift+PgUp/PgDn. PrincePhoenix, он всё равно лучший ответ не выбирает, бот такие не обрабатывает.
так не поймешь, чего у тебя там не работает. Опиши ПОДРОБНО чего сделать не так, что она не работает. раньше работала?
Скидывай скрин ошибки, карту. В папке варкрафт есть папка "Errors" там текстовик нужно найти.
предположение
Пробовал выключить или временно удалить все триггеры? если без триггеров нормально работает - вывод?
похоже автор какую-нибудь карту открыл, отредактировал ландшафт. Она там мб, к примеру, на cjass написано. попробуй xgm.guru/p/wc3/178775 Если ошибка будет на jngp, там есть в папке jngp есть папка "logs" тоже ошибки хранит
Еще может быть нужно включить UMS. Даже, если без триггеров не сохраняет, возможно какие-нибудь за какие-нибудь ограничения (кол-во деревьев, размер карты и прочее).
Все работает. Нужно только правильно настроить. Изменить тайлсет. Сохранить. Потом сохранить карту. Выключить WE. Включить WE, загрузить карту. В теории на карте должно быть много разных тайлсетов со своими настройками в зависимости от того как вы настроили.
Насколько помню, на картах большого размера могут быть глюки с размещением порчи по краям. Но в целом чего-то серьёзного, как и указал Bergi_Bear, нет.
Если заменить модель дерева на модель травы, с анимамцией пригинания при смерти. Убрать колизию, то может получится.
Вот примерная наработка на деревьях.
циклы+массивы
читай статьи
и все более менее нормальные карты сделаны людьми которые прочли все статьи
та же дота например(хотя она не особо нормальная)
Sprite - крепление для эффекта огня, который появляется при повреждениях, если модель используется для здания или для юнита, классифицируемого в РО как механический.
Друга зачем? Нинада, так толку не будет...
Просто используешь Inject main (vjass) или Define (Cjass) чтобы убрать 1 только строчку из main
//***************************************************************************
//*
//* Map Configuration
//*
//***************************************************************************
//***************************************************************************
//*
//* Main Initialization
//*
//***************************************************************************
//===========================================================================
function main takes nothing returns nothing
call SetCameraBounds(- 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), - 3328.0 + GetCameraMargin(CAMERA_MARGIN_LEFT), 3072.0 - GetCameraMargin(CAMERA_MARGIN_TOP), 3328.0 - GetCameraMargin(CAMERA_MARGIN_RIGHT), - 3584.0 + GetCameraMargin(CAMERA_MARGIN_BOTTOM))
call SetDayNightModels("Environment\\DNC\\DNCLordaeron\\DNCLordaeronTerrain\\DNCLordaeronTerrain.mdl", "Environment\\DNC\\DNCLordaeron\\DNCLordaeronUnit\\DNCLordaeronUnit.mdl")
call NewSoundEnvironment("Default")
call SetAmbientDaySound("SunkenRuinsDay")
call SetAmbientNightSound("SunkenRuinsNight")
call SetMapMusic("Music", true, 0)
call InitBlizzard() // вот и все, удалим и не будет бж объектов.
call InitGlobals()
call InitCustomTriggers()
call RunInitializationTriggers()
endfunction
Совсем забыл, функция main генерируется при сохранении карты в редакторе
Без cjass или vjass придется выколупывать war3map.j (код карты) файл из карты и править ручками в блокнотике, геморойно до безобразия, за то ненужен c\vjass и его знания.
quq_CCCP, тогда ну нафиг
это полноценный реверс инженеринг уже будет Asaaaaaar, короче это потребует кучу времени и никто тут этим заниматься скорее всего не будет
думаю даже за платно сложно будет найти того кто согласится убить кучу времени на это
Я решил проблему, используя обработчики событий BlzTriggerRegisterPlayerKeyEvent и EVENT_PLAYER_MOUSE_DOWN
При нажатии правой кнопки мыши проверяется наличие живого героя и селекция юнитов, если в ней нет юнитов которыми игрок может управлять (или вообще никто не выбран) то юнит моментально отправляется приказом "move" в точку, на которую кликнул игрок и сразу выбирается.
При нажатии клавиши герой просто выбирается.
Алексей777, легко. Заходим в редактор объектов, ищем пункт "Файл модели" (в этом случае - "units\creeps\NightElfBattleship\NightElfBattleship") и выковыриваем его из mpq.
war3.mpq
war3x.mpq
доставать mpq editor
на сайте есть
Даже более пошаговая инструкция:
Открываешь редактор варкрафта
Смотришь в редакторе объектов путь к модели (это надо включить там показать значения переменных или что-то там, тут пусть кто-то уточнит, если нужно, я наизусть не помню, хотя постоянно переключаю, как-то так Units\Creeps\StoneGolem\StoneGolem.mdx)
открываешь war3.mpq, ищешь там по пути модель в соответствующих папках
если ее нет, открываешь war3x.mpq и ищешь там
нажимаешь Export
выбираешь куда вынуть
подтверждаешь
все, открываешь папку, куда оно того и там модель и текстура
текстуру можно фотошопить, а модель мдлвисить как душа пожелает /
инструкция может быть чуть не точной, т. к. сочинялась на ходу
похоже более всего на мусор, попадающий в память откуда-то извне. Обычно пропущенная строка автокаста такой фигней страдает. Нельзя точно сказать, нужно менять поля и смотреть. К счастью, описания можно менять и локально, не перепаковывая карту
Сделать триггер для проверки кода, ну и организовать систему для его считывания и поверь это очень много всего, придется продумать.
Если коротко ты цифрами будешь (условно) сохранять своего героя, каждый набор цифр отвечает за какой то параметр героя, силу, ловкость, уровень, предметы и так далее, когда я говорю что это очень много всего придется продумать так и есть, тебе придется создать базу данных, для всех чисел и все проверять при введении команды, для защиты можно сверять суму чисел и проверять героя за которого играет игрок.
Мой тебе совет, не поленись и вбей в поиск "сделать команду save для карты варкрафт 3", на твое удивление там будет то что тебе нужно, уже на второй ссылке.
Знаю такой баг. Вылечтл удалением из карты всего импорта-мусора и переводов путей импорта на источник из кампании.
Т.е. этот баг возникает при очень большом весе впихиваемой в кампанию карты.
Maxsavin, я каждой карте из кампаний даю свой кэш, чтобы не перепуталось ничего.
Не знаю, что получилось бы, сделай я один кэш-файл на всю кампу и грузи карты потом не по порядку. Проверять не буду. Кампания - это пак карт.
Поставил 1.26. Вступительное видео заработало. Звуков диалогов в начале 1 миссии нет, но похоже они здесь и не планировались. В самом журнале строчек не добавляется. Нашёл их в том, что вызывается в левой части меню.
функцию Trig_BlockA_Func005Func011Func001C() убери нафиг
как и другие функции используемые для ифов и подобной херни
а вообще про это написано во всех статьях про jass
мб стоит прочитать сразу несколько статей а затем задавать сюда вопросы?
лол что?
скорость работы глобалок в 1,5 раза быстрее чем у хештейблов
т.е. 10 обращений к хештейблам выполняется столько же времени сколько и 15 к глобалкам
если каждую секунду не выполняется более 1000 обращений к хештейблу то не юзать хэштейблы ради оптимизации та ещё тупость
Да, и для какой цели там сверху стоит "exitwhen true"?
Ну если много юнитов создавать, особенно тяжелых юнитов вроде героев, то будет пролаг, т.к юниты весьма тяжелые обьекты по меркам движка.
Первый раз созавая юнитов движок будет подгружать все их данные из слк таблиц, что тоже вызывает пролаг.
Отключайте по одной, и смотрите какая глючит.
Возможно, что он пытается атаковать кого-либо, но местная пачка крипов сбивает атаку, сообщая что на базу напали, ну или что-то подобное.
Делаешь способность пустышку на основе "Канал", далее делаешь триггер с событием "Юнит начал направлять способность" в условиях ставишь
свою способность, а в действиях условиями на наличие предметов делаешь крафт. Всё что я тут написал - это отсылка к темам которые можно самому найти.
Конечно можно, но триггерно. В варкравте нету дефолтных аур которые бы влияли на магический урон.
Раз в 2 сек. проверяешь есть ли у юнитов на карте бафф ауры пустышки (чародейской ауры или ауры ускорения, основа не важна). Если есть, но у юнита нету спеллбука с скиллом благословление элуный - который повышает урон от магии на n %, то вручаем запрещённый спеллбук этому юниту, если у юнита нету баффа ауры но есть спеллбук удаляем спеллбук. Все просто.
В триггерах тип действий "Камера". Если конкретно расстояние до цели надо поменять, то "Камера - Установить Поле Камеры (Время)" ("Камера - Set Camera Field (Timed)").
Вероятнее всего, ты повышаешь камеру выше скайбокса.
Вероятные решения проблемы:
а) Уменьшить самих юнитов и стилизовать ланд под маленькие модели.
б) Вставить нестандартный скайбокс с огромным размером.
(я бы выбрал первый вариант, потому что он круче)
если тебе звук нужен только для обладателя героя, то ты используешь вместо current camera view
position of hero[GetPlayerId(GetLocalPlayer())]
где hero - массив героев, индекс это номер игрока начиная с нуля
то есть hero[0] красный геро, hero[1] синий и т.д.
тогда это вернет позицию локального героя, а если герой не существует то центр карты
Перезаход обязателем, ибо другие "некачественые" в плане кода карты, вызывают десинхи в вашей игре
Наличие читов может вызывать десинхи, много раз замечал, когда в гарене хоставал, люди сами говорили, что в моей карте переставало выкидывать, только после того как они МХ (мапхак) отключат
Высокая нагрузка на триггер инициализации, частая проблема огромных проектов, рекомендуется сделать отложенную инициализацию, например предзагрузку способностей на пролаг первых 10 секунд игры
Выводы: если все будут писать идельный код и играть на последнем патче, то не будут портить игру другим этими вылетами
Я изначально знал, что мой код плохой (использование мемхака (не путать с мапхакам)), и чтобы другим не портить жизнь закрывал вакрафт после завершения игры
» WarCraft 3 / Конверт моделей
» WarCraft 3 / Морф героя
» WarCraft 3 / Вампиризм
» WarCraft 3 / ИИ нежити
» WarCraft 3 / Очередная проблема
» WarCraft 3 / Нестандартный ландшафт
» IrInA Host Bot / Можно ли сохранять игру?
» WarCraft 3 / Анимация для Декораций
» WarCraft 3 / Форматы звука для WC3
» WarCraft 3 / Все что за пределами карты
» WarCraft 3 / Стандартные модели
» WarCraft 3 / Модели с импортируемыми текстурами
» WarCraft 3 / замена StringHash()
» WarCraft 3 / Отлов определенных атак
» WarCraft 3 / Как сделать это в редакторе карт варкрафт 3?
» WarCraft 3 / Проблемы с Кампанией
» IrInA Host Bot / Параметры карты повреждены
» WarCraft 3 / loop
» WarCraft 3 / Иконки с буквами
» WarCraft 3 / Переменная force
» WarCraft 3 / Проекты варкрафта
» WarCraft 3 / Увеличение магического урона
» WarCraft 3 / Высота земли
» WarCraft 3 / Дессинхрон